package com.aiti.lulian.dto;

import cn.hutool.core.date.DateTime;
import com.aiti.base.core.base.dto.PageDto;
import com.aiti.lulian.dto.crm.CrmFollowRecordDto;
import com.aiti.lulian.entity.*;
import com.aiti.lulian.entity.crm.CrmFollowRecord;
import lombok.Data;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Data
public class CustomerManagementDto extends PageDto {

    /**
     * 主键ID
     */
    private String baseId;

    /**
     * 公司名称
     */
    private String enterpriseName;

    /**
     * 所在省
     */
    private String province;

    /**
     * 所在市
     */
    private String city;

    /**
     * 所在区/县
     */
    private String county;

    /**
     * 意向产品
     */
    private String intentionalProduct;

    /**
     * 客户状态ID
     */
    private String customerStatus;

    /**
     * 客户等级ID
     */
    private String customerLevel;

    /**
     * 客户来源ID
     */
    private String customerSource;

    /**
     * 获得时间
     */
    private Date gainTime;

    /**
     * 销售负责人
     */
    private String saleResponsiblePerson;

    /**
     * 销售负责人姓名
     */
    private String saleResponsiblePersonName;

    /**
     * 创建时间
     */
    private Date baseCreateTime;

    /**
     * 修改时间
     */
    private Date baseUpdateTime;

    /**
     * 逻辑删除（0:未删除, 1:删除）
     */
    private String isDel;

    /**
     * 创建者
     */
    private String creator;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 联系人
     */
    private String contacts;

    /**
     * 手机号
     */
    private String phone;

    /**
     * 其他内容
     */
    private String otherContent;

    /**
     * 关联的公司ID
     */
    private String companyId;

    /**
     * 前端传来的当前用户的角色ID
     */
    private String roleIds;

    /**
     * 联系人集合
     */
    private List<CustomerContacts> customerContactsList;

    /**
     * 顺序（"1":正序，"2":倒序）
     */
    private String sort;

    /**
     * 时间（DAY_BEFORE_YESTERDAY：前天，
     *      YESTERDAY：昨天，
     *      TODAY：今天，
     *      THIS_WEEK：本周，
     *      LAST_WEEK：上周）
     */
    private String dateType;

    /**
     * 开始时间
     */
    private DateTime beginDate;

    /**
     * 结束时间
     */
    private DateTime endDate;

    /**
     * 询盘ID
     */
    private String inquiryId;

    /**
     * 是否为老客户（'0'：新客户，'1'：老客户）
     */
    private String isOld;

    /**
     * 所属部门
     */
    private String deptId;

    /**
     * 开始时间（用于指定时间段的条件筛选）
     */
    private Date dateBegin;

    /**
     * 结束时间（用于指定时间段的条件筛选）
     */
    private Date dateEnd;

    /**
     * 跟进状态（'1'：意向，'2'：报价，'3':成交，'4'：未成交，'5'：暂时搁置）
     */
    private String followUpState;

    /**
     * 当前用户ID
     */
    private String userId;

    /**
     * 是否为企业管理员
     */
    private boolean enterpriseAdmin;

    /**
     * 部门负责人标志
     */
    private String deptPermission;

    /**
     * 转交的客户ID集合
     */
    private List<String> customerIds;

    /**
     * 所属当前部门及其所有子部门集合（数据权限）
     */
    private List<String> deptIdList;
    /**
     * 所属当前部门及其所有子部门集合（条件查询）
     */
    private List<String> deptIdConditionList;

    /**
     * 联系方式一
     */
    private String linkWayOne;

    /**
     * 联系方式二
     */
    private String linkWayTwo;

    /**
     * 微信号
     */
    private String wx;

    /**
     * QQ号
     */
    private String qq;

    /**
     * 旺旺号
     */
    private String ww;

    /**
     * 网址
     */
    private String webUrl;

    /**
     * 邮编
     */
    private String postcode;

    /**
     * 跟进状态
     */
    private String followStatus;

    /**
     * 客户类型
     */
    private String customerType;

    /**
     * 下次跟进时间
     */
    private Date nextFollowTime;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 行业
     */
    private String industry;

    /**
     * 备注
     */
    private String remark;

    /**
     * 标签列表
     */
    private List<CustomerTag> tags;

    /**
     * 协作人列表
     */
    private List<String> collaborators;

    /**
     * 批量编辑数据传输对象
     */
    private Map<String, Object> paramsMap;

    /**
     * 批量编辑所指定的客户ID集合
     */
    private List<String> updatedCustomerIds;

    /**
     * 编辑协作人时传输的协作人用户ID集合
     */
    private List<String> updatedCollaboratorIds;

    /**
     * 编辑协作人时的可选操作（'1'：增加，'2'：替换，'3'：移除）
     */
    private String operation;

    /**
     * 是否以当前用户作为协作人进行查询
     */
    private Boolean isCollaboratorQuery;

    /**
     * 是否以当前用户作为负责人进行查询
     */
    private Boolean isDirectorQuery;

    /**
     * 是否在公海（0：否，1：是）
     */
    private String isPublic;

    /**
     * 最新转入时间
     */
    private Date turnInTime;

    /**
     * 条件查询：所属标签的ID集
     */
    private List<String> tagIds;

    /**
     * 联系人ID集
     */
    private List<String> contactIds;

    private CommunicateInfoSaveDto business;
    private CardBusinessContractDto contract;
    private CustomerContactsDto contact;
    private CrmFollowRecordDto followUpRecord;

    private String isGxmh;
}